package javachongkao.春面向对象1;
import java.util.Random;
import java.util.Scanner;
//7-4（选做） jmu-java-随机数-使用蒙特卡罗法计算圆周率的值
//尝试使用蒙特卡罗法计算圆周率（π）的值。原理如下：
//以原点(0,  0)作为圆心，半径为1画一个圆。该圆的外切正方形，边长为2。
//现往该正方形内随机投点，数量足够多的情况下，落入圆内的点与落入整个
//外切正方形的点的数量比值大概为：
//4∗r
//2
//π∗r
//2
//​
// ，然后就可以得到π的值。
//注意
//请使用jdk库中的Random对象来生成随机数。
//使用Math类中的sqrt与pow函数来计算开根号与平方值。
//让点(x,y)投在整个矩形中，x与y的取值范围为(-1≤x<1, -1≤y<1)。
//输入格式:
//随机数种子seed 投点个数n
//注意：seed为long型，n为int型
//输出格式:
//计算出的值圆周率的值
public class MonteCarloPi {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long seed = scanner.nextLong();
        int n = scanner.nextInt();

        Random random = new Random(seed);
        int count = 0;

        for (int i = 0; i < n; i++) {
            double x = random.nextDouble() * 2 - 1; // [-1, 1)
            double y = random.nextDouble() * 2 - 1; // [-1, 1)

            // 检查点是否在圆内
            if (Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) < 1) {
                count++;
            }
        }

        // 计算圆周率
        double pi = 4.0 * count / n;
        System.out.println(pi);

        scanner.close();
    }
}
